package cn.sumpu.app.guoguojie.biz;

import cn.sumpu.app.guoguojie.domain.DoingSync;
import cn.sumpu.app.guoguojie.exception.AppBusinessException;
import cn.sumpu.app.guoguojie.util.PageModel;
import cn.sumpu.toolkit.weibo.AccessUser;

public interface WeiboBiz {
    /**
     * 发起授权请求新浪微博
     */
    public String requestOauthSina() throws AppBusinessException;

    /**
     * 发起授权请求新浪微博
     * 
     * @param callbackUrl回调地址
     */
    public String requestOauthSina(String callbackUrl) throws AppBusinessException;

    /**
     * 获取用户新浪微博授权信息
     * 
     * @param oauthVerifier 授权码
     * @return AccessToken
     */
    public AccessUser requstAccessTokenSina(String oauthVerifier) throws AppBusinessException;

    /**
     * 根据用户ID获取用户新浪微博资料（授权用户）
     * 
     * @param accessToken 用户授权认证信息
     * @param accessSecret 用户授权认证信息
     */
    public AccessUser getUserInfoSina(String userId, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 分享内容到新浪微博
     * 
     * @param text 文本内容
     * @param url 分享的链接
     * @param picUrl 图片链接
     * @param site 网站来源
     */
    public String shareSina(String text, String url, String picUrl, String site) throws AppBusinessException;

    /**
     * 分享内容到新浪微博
     * 
     * @param text 文本内容
     * @param url 分享的链接
     * @param site 网站来源
     */
    public String shareUrlSina(String text, String url, String site) throws AppBusinessException;

    /**
     * 分享内容到新浪微博
     * 
     * @param text 文本内容
     * @param picUrl 图片链接
     * @param site 网站来源
     */
    public String sharePicSina(String text, String picUrl, String site) throws AppBusinessException;

    /**
     * 分享内容到新浪微博
     * 
     * @param text 文本内容
     * @param site 网站来源
     */
    public String shareTextSina(String text, String site) throws AppBusinessException;

    /**
     * 发布一条新浪微博信息(文本内容)
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param text 发送的文本内容
     */
    public void sendMessageSina(String text, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 上传图片并发布一条微博到新浪
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param text 发送的文本内容
     * @param picUrl 网络图片路径
     */
    public void sendMessageNetPicSina(String text, String picUrl, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 上传图片并发布一条微博到新浪
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param text 发送的文本内容
     * @param picUrl 本地图片路径
     */
    public void sendMessageLocalPicSina(String text, String picUrl, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 新浪微博关注
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param weiboUserId 关注的微博帐号id
     */
    public void addFollowSina(String weiboUserId, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 取消新浪微博关注
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param weiboUserId 取消关注的微博帐号id
     */
    public void delFollowSina(String weiboUserId, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 发起授权请求腾讯微博
     * @return String 请求的地址
     */
    public String requestOauthTencent() throws AppBusinessException;

    /**
     * 发起授权请求腾讯微博
     * @param callbackUrl 回调地址
     * @return String 请求的地址
     */
    public String requestOauthTencent(String callbackUrl) throws AppBusinessException;

    /**
     * 获取用户腾讯微博授权信息
     * 
     * @param oauthVerifier 授权码
     * @return OAuth 返回OAuth获得AccessToken
     */
    public AccessUser requstAccessTokenTencent(String oauthVerifier) throws AppBusinessException;

    /**
     * 获取腾讯微博用户资料（授权用户）
     * 
     * @param accessToken
     * @param accessSecret
     * @return JSONObject
     */
    public AccessUser getUserInfoTencent(String userId, String accessToken, String accessSecret) throws AppBusinessException;

    /**
     * 分享内容到腾讯微博
     * 
     * @param text 文本内容
     * @param url 分享的链接
     * @param picUrl 图片链接
     * @param site 网站来源
     */
    public String shareTencent(String text, String url, String picUrl, String site) throws AppBusinessException;

    /**
     * 分享内容到腾讯微博
     * 
     * @param text 文本内容
     * @param url 分享的链接
     * @param site 网站来源
     */
    public String shareUrlTencent(String text, String url, String site) throws AppBusinessException;

    /**
     * 分享内容到腾讯微博
     * 
     * @param text 文本内容
     * @param picUrl 图片链接
     * @param site 网站来源
     */
    public String sharePicTencent(String text, String picUrl, String site) throws AppBusinessException;

    /**
     * 分享内容到腾讯微博
     * 
     * @param text 文本内容
     * @param site 网站来源
     */
    public String shareTextTencent(String text, String site) throws AppBusinessException;

    /**
     * 发布一条腾讯微博信息(文本内容)
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param text 发送的文本内容
     * @param clientIP 用户ip（必须正确填写用户侧真实ip，不能为内网ip及以127或255开头的ip，以分析用户所在地）
     */
    public void sendMessageTencent(String text, String accessToken, String accessSecret, String clientIP) throws AppBusinessException;

    /**
     * 上传图片并发布一条微博到腾讯微博
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param text 发送的文本内容
     * @param picUrl 本地图片路径
     * @param clientIP 用户ip（必须正确填写用户侧真实ip，不能为内网ip及以127或255开头的ip，以分析用户所在地）
     */
    public void sendMessageLocalPicTencent(String text, String picUrl, String accessToken, String accessSecret, String clientIP) throws AppBusinessException;

    /**
     * 微博关注腾讯微博
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param weiboUserId 关注的微博帐号id
     * @param clientIP 用户ip（必须正确填写用户侧真实ip，不能为内网ip及以127或255开头的ip，以分析用户所在地）
     */
    public void addFollowTencent(String weiboUserId, String accessToken, String accessSecret, String clientIP) throws AppBusinessException;

    /**
     * 取消腾讯微博关注
     * 
     * @param accessToken 授权认证信息
     * @param accessSecret 授权认证信息
     * @param weiboUserId 取消关注的微博帐号id
     */
    public void delFollowTencent(String weiboUserId, String accessToken, String accessSecret) throws AppBusinessException;

    public void saveDoingSync(DoingSync doingSync,String saveType) throws AppBusinessException;
    
    public void deleteDoingSync(String doingSyncId) throws AppBusinessException;
    
    public void timePost() throws AppBusinessException;
    
    public DoingSync getDoingSyncById(String doingSyncId) throws AppBusinessException;
    
    public PageModel getDoingSync(Integer page, Integer pageSize, String status) throws AppBusinessException;
}
